iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Modern Web

自動化 End-End 測試 Nightwatch.js系列 第 11

自動化 End-End 測試 Nightwatch.js 之踩雷筆記:等待物件II

  • 分享至 

  • xImage
  •  

前篇提到可以利用 waitForElementVisible() 去等待一個物件的 display 變成 nonehidden

<div id="status" style="display: none;">
    <div class="text">載入中</div>
</div>

測試:

this.waitForElementNotPresent('#status', 60000);

// Element <#status> was not present after 4004 milliseconds.

不過如果測試環境使用的是 Safari:

Error while running .isElementDisplayed() protocol action: The command 'GET /session/ID/element/ID/displayed' was not found.

這是因為 Safari 的 WebDriver 並沒有 displayed 這個 endpoint。

解法

  1. 直接修改前端
    移除透過修改 display 的部分,直接把 element 移除比較簡單XD

  2. 撰寫客製化指令
    利用 getCssProperty() 更新該 element 的 display

module.exports = {
  command: async function() {
    let currentStatus = '';
    while (currentStatus !== 'none')
      this.getCssProperty('#status', 'display', result => {
        currentStatus = result.value;
        this.pause(500);
      });
  },
};

上一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:等待物件
下一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:上傳檔案
系列文
自動化 End-End 測試 Nightwatch.js30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言